<!-- HTML header for doxygen 1.8.6-->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta content="text/xhtml;charset=utf-8" http-equiv="Content-Type"/>
<meta content="IE=9" http-equiv="X-UA-Compatible"/>
<meta content="Doxygen 1.8.13" name="generator"/>
<title>OpenCV: ArUco Marker Detection</title>
<link href="../../opencv.ico" rel="shortcut icon" type="image/x-icon"/>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
<script src="../../jquery.js" type="text/javascript"></script>
<script src="../../dynsections.js" type="text/javascript"></script>
<script src="../../tutorial-utils.js" type="text/javascript"></script>
<link href="../../search/search.css" rel="stylesheet" type="text/css"/>
<script src="../../search/searchdata.js" type="text/javascript"></script>
<script src="../../search/search.js" type="text/javascript"></script>
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js", "TeX/AMSmath.js", "TeX/AMSsymbols.js"],
    jax: ["input/TeX","output/HTML-CSS"],
});
//<![CDATA[
MathJax.Hub.Config(
{
  TeX: {
      Macros: {
          matTT: [ "\\[ \\left|\\begin{array}{ccc} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{array}\\right| \\]", 9],
          fork: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ \\end{array} \\right.", 4],
          forkthree: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ \\end{array} \\right.", 6],
          forkfour: ["\\left\\{ \\begin{array}{l l} #1 & \\mbox{#2}\\\\ #3 & \\mbox{#4}\\\\ #5 & \\mbox{#6}\\\\ #7 & \\mbox{#8}\\\\ \\end{array} \\right.", 8],
          vecthree: ["\\begin{bmatrix} #1\\\\ #2\\\\ #3 \\end{bmatrix}", 3],
          vecthreethree: ["\\begin{bmatrix} #1 & #2 & #3\\\\ #4 & #5 & #6\\\\ #7 & #8 & #9 \\end{bmatrix}", 9],
          cameramatrix: ["#1 = \\begin{bmatrix} f_x & 0 & c_x\\\\ 0 & f_y & c_y\\\\ 0 & 0 & 1 \\end{bmatrix}", 1],
          distcoeffs: ["(k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6 [, s_1, s_2, s_3, s_4[, \\tau_x, \\tau_y]]]]) \\text{ of 4, 5, 8, 12 or 14 elements}"],
          distcoeffsfisheye: ["(k_1, k_2, k_3, k_4)"],
          hdotsfor: ["\\dots", 1],
          mathbbm: ["\\mathbb{#1}", 1],
          bordermatrix: ["\\matrix{#1}", 1]
      }
  }
}
);
//]]>
</script><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js" type="text/javascript"></script>
<link href="../../doxygen.css" rel="stylesheet" type="text/css"/>
<link href="../../stylesheet.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<!--#include virtual="/google-search.html"-->
<table cellpadding="0" cellspacing="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="../../opencv-logo-small.png"/></td>
  <td style="padding-left: 0.5em;">
   <div id="projectname">OpenCV
    <span id="projectnumber">4.5.2</span>
   </div>
   <div id="projectbrief">Open Source Computer Vision</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "../../search",false,'Search');
</script>
<script src="../../menudata.js" type="text/javascript"></script>
<script src="../../menu.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
  initMenu('../../',true,false,'search.php','Search');
  $(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
</div><!-- top -->
<!-- window showing the filter options -->
<div id="MSearchSelectWindow" onkeydown="return searchBox.OnSearchSelectKey(event)" onmouseout="return searchBox.OnSearchSelectHide()" onmouseover="return searchBox.OnSearchSelectShow()">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe frameborder="0" id="MSearchResults" name="MSearchResults" src="javascript:void(0)">
</iframe>
</div>
<div class="header">
  <div class="summary">
<a href="#nested-classes">Classes</a> |
<a href="#enum-members">Enumerations</a> |
<a href="#func-members">Functions</a>  </div>
  <div class="headertitle">
<div class="title">ArUco Marker Detection</div>  </div>
</div><!--header-->
<div class="contents">
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Classes</h2></td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html">cv::aruco::Board</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight"><a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html" title="Board of markers. ">Board</a> of markers.  <a href="../../d4/db2/classcv_1_1aruco_1_1Board.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d0/d3c/classcv_1_1aruco_1_1CharucoBoard.html">cv::aruco::CharucoBoard</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">ChArUco board Specific class for ChArUco boards. A ChArUco board is a planar board where the markers are placed inside the white squares of a chessboard. The benefits of ChArUco boards is that they provide both, ArUco markers versatility and chessboard corner precision, which is important for calibration and pose estimation. This class also allows the easy creation and drawing of ChArUco boards.  <a href="../../d0/d3c/classcv_1_1aruco_1_1CharucoBoard.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">struct  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d1/dcd/structcv_1_1aruco_1_1DetectorParameters.html">cv::aruco::DetectorParameters</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Parameters for the detectMarker process:  <a href="../../d1/dcd/structcv_1_1aruco_1_1DetectorParameters.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">cv::aruco::Dictionary</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Dictionary/Set of markers. It contains the inner codification.  <a href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:"><td align="right" class="memItemLeft" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../de/d05/classcv_1_1aruco_1_1GridBoard.html">cv::aruco::GridBoard</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft"> </td><td class="mdescRight">Planar board with grid arrangement of markers More common type of board. All markers are placed in the same plane in a grid arrangement. The board can be drawn using <a class="el" href="../../d9/d6a/group__aruco.html#gacc98e7993d9f78c9eb1250f030896e85" title="Draw a planar board. ">drawPlanarBoard()</a> function (.  <a href="../../de/d05/classcv_1_1aruco_1_1GridBoard.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:gafce26321f39d331bc12032a72b90eda6"><td align="right" class="memItemLeft" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#gafce26321f39d331bc12032a72b90eda6">cv::aruco::CornerRefineMethod</a> { <br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggafce26321f39d331bc12032a72b90eda6adaab47b5a6c1a9519c31cd911799f397">cv::aruco::CORNER_REFINE_NONE</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggafce26321f39d331bc12032a72b90eda6a62ae78cbc223dfe552c99adbc9002e5b">cv::aruco::CORNER_REFINE_SUBPIX</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggafce26321f39d331bc12032a72b90eda6abef4b459cc329a3ab839773c0805e66a">cv::aruco::CORNER_REFINE_CONTOUR</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggafce26321f39d331bc12032a72b90eda6a3e940dda27d11e803b40b51bde40f2c5">cv::aruco::CORNER_REFINE_APRILTAG</a>
<br/>
 }</td></tr>
<tr class="separator:gafce26321f39d331bc12032a72b90eda6"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gac84398a9ed9dd01306592dd616c2c975"><td align="right" class="memItemLeft" valign="top">enum  </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#gac84398a9ed9dd01306592dd616c2c975">cv::aruco::PREDEFINED_DICTIONARY_NAME</a> { <br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975ada8e830ff0024e839e93c01f5fed0c55">cv::aruco::DICT_4X4_50</a> = 0, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a6df6c3ad38ac44ea1546ef4f4841f310">cv::aruco::DICT_4X4_100</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975ab76bdd5591c56a72b4359f7e34b0d681">cv::aruco::DICT_4X4_250</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a395a8309569c1977538fd11b57752087">cv::aruco::DICT_4X4_1000</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a37f2f428fbac13d12e90c47e8c6fc8d1">cv::aruco::DICT_5X5_50</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a85cd9c2830621caeeda490d059bc2743">cv::aruco::DICT_5X5_100</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975aeef63448bb93975855db174da8d4e008">cv::aruco::DICT_5X5_250</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a74a4638c42518ef99248639169b4f96b">cv::aruco::DICT_5X5_1000</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975ad5b25a02c860debd3cba97975b90cc1e">cv::aruco::DICT_6X6_50</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a033f9561c7bd604f70912ecb9a49fee2">cv::aruco::DICT_6X6_100</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a6eb1a3e9c94c7123d8b1904a57193f16">cv::aruco::DICT_6X6_250</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a9f3ab829fb35fc9ff30e8f809d318e03">cv::aruco::DICT_6X6_1000</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a7c9044100bd1cc60d41473c4cd9cb683">cv::aruco::DICT_7X7_50</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a5a3270f81a64936b79e8e9712187b85d">cv::aruco::DICT_7X7_100</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a69192aa267e8624d8a886d8a875fcfa6">cv::aruco::DICT_7X7_250</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a91dc783a8d4adc55a8ff8b48212a1c27">cv::aruco::DICT_7X7_1000</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a6c2a6d747864ef4daad8cdeffa07f7c0">cv::aruco::DICT_ARUCO_ORIGINAL</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a6235dfb8007de53d3e8de11bee1e3854">cv::aruco::DICT_APRILTAG_16h5</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a52c8d2fe982b65dda93dd70e3d18be30">cv::aruco::DICT_APRILTAG_25h9</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975ad2f28bef0b2b725e592bce9cd34183e9">cv::aruco::DICT_APRILTAG_36h10</a>, 
<br/>
  <a class="el" href="../../d9/d6a/group__aruco.html#ggac84398a9ed9dd01306592dd616c2c975a8e9e65926cdf4898a760b3dfd9daf989">cv::aruco::DICT_APRILTAG_36h11</a>
<br/>
 }<tr class="memdesc:gac84398a9ed9dd01306592dd616c2c975"><td class="mdescLeft"> </td><td class="mdescRight">Predefined markers dictionaries/sets Each dictionary indicates the number of bits and the number of markers contained.  <a href="../../d9/d6a/group__aruco.html#gac84398a9ed9dd01306592dd616c2c975">More...</a><br/></td></tr>
</td></tr>
<tr class="separator:gac84398a9ed9dd01306592dd616c2c975"><td class="memSeparator" colspan="2"> </td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:gace9580fe2e04beebd3ed57d413a72552"><td align="right" class="memItemLeft" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#gace9580fe2e04beebd3ed57d413a72552">cv::aruco::_drawPlanarBoardImpl</a> (<a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html">Board</a> *board, <a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> outSize, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> img, int marginSize=0, int borderBits=1)</td></tr>
<tr class="memdesc:gace9580fe2e04beebd3ed57d413a72552"><td class="mdescLeft"> </td><td class="mdescRight">Implementation of drawPlanarBoard that accepts a raw <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html" title="Board of markers. ">Board</a> pointer.  <a href="../../d9/d6a/group__aruco.html#gace9580fe2e04beebd3ed57d413a72552">More...</a><br/></td></tr>
<tr class="separator:gace9580fe2e04beebd3ed57d413a72552"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gacf03e5afb0bc516b73028cf209984a06"><td align="right" class="memItemLeft" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#gacf03e5afb0bc516b73028cf209984a06">cv::aruco::calibrateCameraAruco</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> corners, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> ids, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> counter, const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html">Board</a> &gt; &amp;board, <a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> imageSize, <a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> cameraMatrix, <a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> distCoeffs, <a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> rvecs, <a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> tvecs, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> stdDeviationsIntrinsics, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> stdDeviationsExtrinsics, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> perViewErrors, int flags=0, <a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a> criteria=<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a>(<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57aeb9da694ea67b3ef7d524521b580867d">TermCriteria::COUNT</a>+<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57a857609e73e7028e638d2ea649f3b45d5">TermCriteria::EPS</a>, 30, DBL_EPSILON))</td></tr>
<tr class="memdesc:gacf03e5afb0bc516b73028cf209984a06"><td class="mdescLeft"> </td><td class="mdescRight">Calibrate a camera using aruco markers.  <a href="../../d9/d6a/group__aruco.html#gacf03e5afb0bc516b73028cf209984a06">More...</a><br/></td></tr>
<tr class="separator:gacf03e5afb0bc516b73028cf209984a06"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga5cb94cb60821894039dbb902ec42d835"><td align="right" class="memItemLeft" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#ga5cb94cb60821894039dbb902ec42d835">cv::aruco::calibrateCameraAruco</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> corners, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> ids, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> counter, const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html">Board</a> &gt; &amp;board, <a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> imageSize, <a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> cameraMatrix, <a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> distCoeffs, <a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> rvecs=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>(), <a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> tvecs=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>(), int flags=0, <a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a> criteria=<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a>(<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57aeb9da694ea67b3ef7d524521b580867d">TermCriteria::COUNT</a>+<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57a857609e73e7028e638d2ea649f3b45d5">TermCriteria::EPS</a>, 30, DBL_EPSILON))</td></tr>
<tr class="memdesc:ga5cb94cb60821894039dbb902ec42d835"><td class="mdescLeft"> </td><td class="mdescRight">It's the same function as <a class="el" href="../../d9/d6a/group__aruco.html#gacf03e5afb0bc516b73028cf209984a06" title="Calibrate a camera using aruco markers. ">calibrateCameraAruco</a> but without calibration error estimation.  <a href="../../d9/d6a/group__aruco.html#ga5cb94cb60821894039dbb902ec42d835">More...</a><br/></td></tr>
<tr class="separator:ga5cb94cb60821894039dbb902ec42d835"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga54cf81c2e39119a84101258338aa7383"><td align="right" class="memItemLeft" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#ga54cf81c2e39119a84101258338aa7383">cv::aruco::calibrateCameraCharuco</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> charucoCorners, <a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> charucoIds, const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d0/d3c/classcv_1_1aruco_1_1CharucoBoard.html">CharucoBoard</a> &gt; &amp;board, <a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> imageSize, <a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> cameraMatrix, <a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> distCoeffs, <a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> rvecs, <a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> tvecs, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> stdDeviationsIntrinsics, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> stdDeviationsExtrinsics, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> perViewErrors, int flags=0, <a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a> criteria=<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a>(<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57aeb9da694ea67b3ef7d524521b580867d">TermCriteria::COUNT</a>+<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57a857609e73e7028e638d2ea649f3b45d5">TermCriteria::EPS</a>, 30, DBL_EPSILON))</td></tr>
<tr class="memdesc:ga54cf81c2e39119a84101258338aa7383"><td class="mdescLeft"> </td><td class="mdescRight">Calibrate a camera using Charuco corners.  <a href="../../d9/d6a/group__aruco.html#ga54cf81c2e39119a84101258338aa7383">More...</a><br/></td></tr>
<tr class="separator:ga54cf81c2e39119a84101258338aa7383"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gabefb98f7f2c74c98574fd50711c5349d"><td align="right" class="memItemLeft" valign="top">double </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#gabefb98f7f2c74c98574fd50711c5349d">cv::aruco::calibrateCameraCharuco</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> charucoCorners, <a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> charucoIds, const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d0/d3c/classcv_1_1aruco_1_1CharucoBoard.html">CharucoBoard</a> &gt; &amp;board, <a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> imageSize, <a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> cameraMatrix, <a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> distCoeffs, <a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> rvecs=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>(), <a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> tvecs=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>(), int flags=0, <a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a> criteria=<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a>(<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57aeb9da694ea67b3ef7d524521b580867d">TermCriteria::COUNT</a>+<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57a857609e73e7028e638d2ea649f3b45d5">TermCriteria::EPS</a>, 30, DBL_EPSILON))</td></tr>
<tr class="memdesc:gabefb98f7f2c74c98574fd50711c5349d"><td class="mdescLeft"> </td><td class="mdescRight">It's the same function as <a class="el" href="../../d9/d6a/group__aruco.html#ga54cf81c2e39119a84101258338aa7383" title="Calibrate a camera using Charuco corners. ">calibrateCameraCharuco</a> but without calibration error estimation.  <a href="../../d9/d6a/group__aruco.html#gabefb98f7f2c74c98574fd50711c5349d">More...</a><br/></td></tr>
<tr class="separator:gabefb98f7f2c74c98574fd50711c5349d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaade474aa951d02470c34ddbb91d851ea"><td align="right" class="memItemLeft" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#gaade474aa951d02470c34ddbb91d851ea">cv::aruco::detectCharucoDiamond</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> image, <a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> markerCorners, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> markerIds, float squareMarkerLengthRate, <a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> diamondCorners, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> diamondIds, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> cameraMatrix=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>(), <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> distCoeffs=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>())</td></tr>
<tr class="memdesc:gaade474aa951d02470c34ddbb91d851ea"><td class="mdescLeft"> </td><td class="mdescRight">Detect ChArUco Diamond markers.  <a href="../../d9/d6a/group__aruco.html#gaade474aa951d02470c34ddbb91d851ea">More...</a><br/></td></tr>
<tr class="separator:gaade474aa951d02470c34ddbb91d851ea"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gab9159aa69250d8d3642593e508cb6baa"><td align="right" class="memItemLeft" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#gab9159aa69250d8d3642593e508cb6baa">cv::aruco::detectMarkers</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> image, const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a> &gt; &amp;dictionary, <a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> corners, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> ids, const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d1/dcd/structcv_1_1aruco_1_1DetectorParameters.html">DetectorParameters</a> &gt; &amp;parameters=<a class="el" href="../../d1/dcd/structcv_1_1aruco_1_1DetectorParameters.html#aca7a04c0d23b3e1c575e11af697d506c">DetectorParameters::create</a>(), <a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> rejectedImgPoints=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>(), <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> cameraMatrix=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>(), <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> distCoeff=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>())</td></tr>
<tr class="memdesc:gab9159aa69250d8d3642593e508cb6baa"><td class="mdescLeft"> </td><td class="mdescRight">Basic marker detection.  <a href="../../d9/d6a/group__aruco.html#gab9159aa69250d8d3642593e508cb6baa">More...</a><br/></td></tr>
<tr class="separator:gab9159aa69250d8d3642593e508cb6baa"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga16fda651a4e6a8f5747a85cbb6b400a2"><td align="right" class="memItemLeft" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#ga16fda651a4e6a8f5747a85cbb6b400a2">cv::aruco::drawAxis</a> (<a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> image, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> cameraMatrix, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> distCoeffs, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> rvec, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> tvec, float length)</td></tr>
<tr class="memdesc:ga16fda651a4e6a8f5747a85cbb6b400a2"><td class="mdescLeft"> </td><td class="mdescRight">Draw coordinate system axis from pose estimation.  <a href="../../d9/d6a/group__aruco.html#ga16fda651a4e6a8f5747a85cbb6b400a2">More...</a><br/></td></tr>
<tr class="separator:ga16fda651a4e6a8f5747a85cbb6b400a2"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf71fb897d5f03f7424c0c84715aa6228"><td align="right" class="memItemLeft" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#gaf71fb897d5f03f7424c0c84715aa6228">cv::aruco::drawCharucoDiamond</a> (const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a> &gt; &amp;dictionary, <a class="el" href="../../dc/d84/group__core__basic.html#ga94ce799099ae6cdd66685e3fd0cad7d7">Vec4i</a> ids, int squareLength, int markerLength, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> img, int marginSize=0, int borderBits=1)</td></tr>
<tr class="memdesc:gaf71fb897d5f03f7424c0c84715aa6228"><td class="mdescLeft"> </td><td class="mdescRight">Draw a ChArUco Diamond marker.  <a href="../../d9/d6a/group__aruco.html#gaf71fb897d5f03f7424c0c84715aa6228">More...</a><br/></td></tr>
<tr class="separator:gaf71fb897d5f03f7424c0c84715aa6228"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga7225eee644190f791e1583c499b7ab10"><td align="right" class="memItemLeft" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#ga7225eee644190f791e1583c499b7ab10">cv::aruco::drawDetectedCornersCharuco</a> (<a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> image, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> charucoCorners, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> charucoIds=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>(), <a class="el" href="../../dc/d84/group__core__basic.html#ga599fe92e910c027be274233eccad7beb">Scalar</a> cornerColor=<a class="el" href="../../dc/d84/group__core__basic.html#ga599fe92e910c027be274233eccad7beb">Scalar</a>(255, 0, 0))</td></tr>
<tr class="memdesc:ga7225eee644190f791e1583c499b7ab10"><td class="mdescLeft"> </td><td class="mdescRight">Draws a set of Charuco corners.  <a href="../../d9/d6a/group__aruco.html#ga7225eee644190f791e1583c499b7ab10">More...</a><br/></td></tr>
<tr class="separator:ga7225eee644190f791e1583c499b7ab10"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga0dbf27203267fb8e9f282554cf0d3433"><td align="right" class="memItemLeft" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#ga0dbf27203267fb8e9f282554cf0d3433">cv::aruco::drawDetectedDiamonds</a> (<a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> image, <a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> diamondCorners, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> diamondIds=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>(), <a class="el" href="../../dc/d84/group__core__basic.html#ga599fe92e910c027be274233eccad7beb">Scalar</a> borderColor=<a class="el" href="../../dc/d84/group__core__basic.html#ga599fe92e910c027be274233eccad7beb">Scalar</a>(0, 0, 255))</td></tr>
<tr class="memdesc:ga0dbf27203267fb8e9f282554cf0d3433"><td class="mdescLeft"> </td><td class="mdescRight">Draw a set of detected ChArUco Diamond markers.  <a href="../../d9/d6a/group__aruco.html#ga0dbf27203267fb8e9f282554cf0d3433">More...</a><br/></td></tr>
<tr class="separator:ga0dbf27203267fb8e9f282554cf0d3433"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga2ad34b0f277edebb6a132d3069ed2909"><td align="right" class="memItemLeft" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#ga2ad34b0f277edebb6a132d3069ed2909">cv::aruco::drawDetectedMarkers</a> (<a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> image, <a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> corners, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> ids=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>(), <a class="el" href="../../dc/d84/group__core__basic.html#ga599fe92e910c027be274233eccad7beb">Scalar</a> borderColor=<a class="el" href="../../dc/d84/group__core__basic.html#ga599fe92e910c027be274233eccad7beb">Scalar</a>(0, 255, 0))</td></tr>
<tr class="memdesc:ga2ad34b0f277edebb6a132d3069ed2909"><td class="mdescLeft"> </td><td class="mdescRight">Draw detected markers in image.  <a href="../../d9/d6a/group__aruco.html#ga2ad34b0f277edebb6a132d3069ed2909">More...</a><br/></td></tr>
<tr class="separator:ga2ad34b0f277edebb6a132d3069ed2909"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga254ed245e10c5b3e2259d5d9b8ea8e2f"><td align="right" class="memItemLeft" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#ga254ed245e10c5b3e2259d5d9b8ea8e2f">cv::aruco::drawMarker</a> (const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a> &gt; &amp;dictionary, int id, int sidePixels, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> img, int borderBits=1)</td></tr>
<tr class="memdesc:ga254ed245e10c5b3e2259d5d9b8ea8e2f"><td class="mdescLeft"> </td><td class="mdescRight">Draw a canonical marker image.  <a href="../../d9/d6a/group__aruco.html#ga254ed245e10c5b3e2259d5d9b8ea8e2f">More...</a><br/></td></tr>
<tr class="separator:ga254ed245e10c5b3e2259d5d9b8ea8e2f"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gacc98e7993d9f78c9eb1250f030896e85"><td align="right" class="memItemLeft" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#gacc98e7993d9f78c9eb1250f030896e85">cv::aruco::drawPlanarBoard</a> (const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html">Board</a> &gt; &amp;board, <a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> outSize, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> img, int marginSize=0, int borderBits=1)</td></tr>
<tr class="memdesc:gacc98e7993d9f78c9eb1250f030896e85"><td class="mdescLeft"> </td><td class="mdescRight">Draw a planar board.  <a href="../../d9/d6a/group__aruco.html#gacc98e7993d9f78c9eb1250f030896e85">More...</a><br/></td></tr>
<tr class="separator:gacc98e7993d9f78c9eb1250f030896e85"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga366993d29fdddd995fba8c2e6ca811ea"><td align="right" class="memItemLeft" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#ga366993d29fdddd995fba8c2e6ca811ea">cv::aruco::estimatePoseBoard</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> corners, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> ids, const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html">Board</a> &gt; &amp;board, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> cameraMatrix, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> distCoeffs, <a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> rvec, <a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> tvec, bool useExtrinsicGuess=false)</td></tr>
<tr class="memdesc:ga366993d29fdddd995fba8c2e6ca811ea"><td class="mdescLeft"> </td><td class="mdescRight">Pose estimation for a board of markers.  <a href="../../d9/d6a/group__aruco.html#ga366993d29fdddd995fba8c2e6ca811ea">More...</a><br/></td></tr>
<tr class="separator:ga366993d29fdddd995fba8c2e6ca811ea"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga21b51b9e8c6422a4bac27e48fa0a150b"><td align="right" class="memItemLeft" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#ga21b51b9e8c6422a4bac27e48fa0a150b">cv::aruco::estimatePoseCharucoBoard</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> charucoCorners, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> charucoIds, const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d0/d3c/classcv_1_1aruco_1_1CharucoBoard.html">CharucoBoard</a> &gt; &amp;board, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> cameraMatrix, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> distCoeffs, <a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> rvec, <a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> tvec, bool useExtrinsicGuess=false)</td></tr>
<tr class="memdesc:ga21b51b9e8c6422a4bac27e48fa0a150b"><td class="mdescLeft"> </td><td class="mdescRight">Pose estimation for a ChArUco board given some of their corners.  <a href="../../d9/d6a/group__aruco.html#ga21b51b9e8c6422a4bac27e48fa0a150b">More...</a><br/></td></tr>
<tr class="separator:ga21b51b9e8c6422a4bac27e48fa0a150b"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga84dd2e88f3e8c3255eb78e0f79571bd1"><td align="right" class="memItemLeft" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#ga84dd2e88f3e8c3255eb78e0f79571bd1">cv::aruco::estimatePoseSingleMarkers</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> corners, float markerLength, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> cameraMatrix, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> distCoeffs, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> rvecs, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> tvecs, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> _objPoints=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>())</td></tr>
<tr class="memdesc:ga84dd2e88f3e8c3255eb78e0f79571bd1"><td class="mdescLeft"> </td><td class="mdescRight">Pose estimation for single markers.  <a href="../../d9/d6a/group__aruco.html#ga84dd2e88f3e8c3255eb78e0f79571bd1">More...</a><br/></td></tr>
<tr class="separator:ga84dd2e88f3e8c3255eb78e0f79571bd1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaedcb47348a8f7ccf0bd65ee81a8c7152"><td align="right" class="memItemLeft" valign="top"><a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a> &gt; </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#gaedcb47348a8f7ccf0bd65ee81a8c7152">cv::aruco::generateCustomDictionary</a> (int nMarkers, int markerSize, int randomSeed=0)</td></tr>
<tr class="separator:gaedcb47348a8f7ccf0bd65ee81a8c7152"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gab0dd0832bceb1131946e4be9f26317ba"><td align="right" class="memItemLeft" valign="top"><a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a> &gt; </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#gab0dd0832bceb1131946e4be9f26317ba">cv::aruco::generateCustomDictionary</a> (int nMarkers, int markerSize, const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a> &gt; &amp;baseDictionary, int randomSeed=0)</td></tr>
<tr class="memdesc:gab0dd0832bceb1131946e4be9f26317ba"><td class="mdescLeft"> </td><td class="mdescRight">Generates a new customizable marker dictionary.  <a href="../../d9/d6a/group__aruco.html#gab0dd0832bceb1131946e4be9f26317ba">More...</a><br/></td></tr>
<tr class="separator:gab0dd0832bceb1131946e4be9f26317ba"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga0c158c55c50df8354930927d819f7e9d"><td align="right" class="memItemLeft" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#ga0c158c55c50df8354930927d819f7e9d">cv::aruco::getBoardObjectAndImagePoints</a> (const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html">Board</a> &gt; &amp;board, <a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> detectedCorners, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> detectedIds, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> objPoints, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> imgPoints)</td></tr>
<tr class="memdesc:ga0c158c55c50df8354930927d819f7e9d"><td class="mdescLeft"> </td><td class="mdescRight">Given a board configuration and a set of detected markers, returns the corresponding image points and object points to call solvePnP.  <a href="../../d9/d6a/group__aruco.html#ga0c158c55c50df8354930927d819f7e9d">More...</a><br/></td></tr>
<tr class="separator:ga0c158c55c50df8354930927d819f7e9d"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gaf5d7e909fe8ff2ad2108e354669ecd17"><td align="right" class="memItemLeft" valign="top"><a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a> &gt; </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#gaf5d7e909fe8ff2ad2108e354669ecd17">cv::aruco::getPredefinedDictionary</a> (<a class="el" href="../../d9/d6a/group__aruco.html#gac84398a9ed9dd01306592dd616c2c975">PREDEFINED_DICTIONARY_NAME</a> name)</td></tr>
<tr class="memdesc:gaf5d7e909fe8ff2ad2108e354669ecd17"><td class="mdescLeft"> </td><td class="mdescRight">Returns one of the predefined dictionaries defined in PREDEFINED_DICTIONARY_NAME.  <a href="../../d9/d6a/group__aruco.html#gaf5d7e909fe8ff2ad2108e354669ecd17">More...</a><br/></td></tr>
<tr class="separator:gaf5d7e909fe8ff2ad2108e354669ecd17"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga461f8400cbf453ac94fbe3c680192fa2"><td align="right" class="memItemLeft" valign="top"><a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a> &gt; </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#ga461f8400cbf453ac94fbe3c680192fa2">cv::aruco::getPredefinedDictionary</a> (int dict)</td></tr>
<tr class="memdesc:ga461f8400cbf453ac94fbe3c680192fa2"><td class="mdescLeft"> </td><td class="mdescRight">Returns one of the predefined dictionaries referenced by DICT_*.  <a href="../../d9/d6a/group__aruco.html#ga461f8400cbf453ac94fbe3c680192fa2">More...</a><br/></td></tr>
<tr class="separator:ga461f8400cbf453ac94fbe3c680192fa2"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:gadcc5dc30c9ad33dcf839e84e8638dcd1"><td align="right" class="memItemLeft" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#gadcc5dc30c9ad33dcf839e84e8638dcd1">cv::aruco::interpolateCornersCharuco</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> markerCorners, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> markerIds, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> image, const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d0/d3c/classcv_1_1aruco_1_1CharucoBoard.html">CharucoBoard</a> &gt; &amp;board, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> charucoCorners, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> charucoIds, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> cameraMatrix=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>(), <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> distCoeffs=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>(), int minMarkers=2)</td></tr>
<tr class="memdesc:gadcc5dc30c9ad33dcf839e84e8638dcd1"><td class="mdescLeft"> </td><td class="mdescRight">Interpolate position of ChArUco board corners.  <a href="../../d9/d6a/group__aruco.html#gadcc5dc30c9ad33dcf839e84e8638dcd1">More...</a><br/></td></tr>
<tr class="separator:gadcc5dc30c9ad33dcf839e84e8638dcd1"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga13a2742381c0a48e146d230a8cda2e66"><td align="right" class="memItemLeft" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#ga13a2742381c0a48e146d230a8cda2e66">cv::aruco::refineDetectedMarkers</a> (<a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> image, const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html">Board</a> &gt; &amp;board, <a class="el" href="../../dc/d84/group__core__basic.html#ga8899575c0929a56ab8bdd01cf34ebcb1">InputOutputArrayOfArrays</a> detectedCorners, <a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> detectedIds, <a class="el" href="../../dc/d84/group__core__basic.html#ga8899575c0929a56ab8bdd01cf34ebcb1">InputOutputArrayOfArrays</a> rejectedCorners, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> cameraMatrix=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>(), <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> distCoeffs=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>(), float minRepDistance=10.f, float errorCorrectionRate=3.f, bool checkAllOrders=true, <a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> recoveredIdxs=<a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>(), const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d1/dcd/structcv_1_1aruco_1_1DetectorParameters.html">DetectorParameters</a> &gt; &amp;parameters=<a class="el" href="../../d1/dcd/structcv_1_1aruco_1_1DetectorParameters.html#aca7a04c0d23b3e1c575e11af697d506c">DetectorParameters::create</a>())</td></tr>
<tr class="memdesc:ga13a2742381c0a48e146d230a8cda2e66"><td class="mdescLeft"> </td><td class="mdescRight">Refind not detected markers based on the already detected and the board layout.  <a href="../../d9/d6a/group__aruco.html#ga13a2742381c0a48e146d230a8cda2e66">More...</a><br/></td></tr>
<tr class="separator:ga13a2742381c0a48e146d230a8cda2e66"><td class="memSeparator" colspan="2"> </td></tr>
<tr class="memitem:ga90a455587ebb94cc0e0c7be1a929acb1"><td align="right" class="memItemLeft" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="../../d9/d6a/group__aruco.html#ga90a455587ebb94cc0e0c7be1a929acb1">cv::aruco::testCharucoCornersCollinear</a> (const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d0/d3c/classcv_1_1aruco_1_1CharucoBoard.html">CharucoBoard</a> &gt; &amp;_board, <a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> _charucoIds)</td></tr>
<tr class="memdesc:ga90a455587ebb94cc0e0c7be1a929acb1"><td class="mdescLeft"> </td><td class="mdescRight">test whether the ChArUco markers are collinear  <a href="../../d9/d6a/group__aruco.html#ga90a455587ebb94cc0e0c7be1a929acb1">More...</a><br/></td></tr>
<tr class="separator:ga90a455587ebb94cc0e0c7be1a929acb1"><td class="memSeparator" colspan="2"> </td></tr>
</table>
<a id="details" name="details"></a><h2 class="groupheader">Detailed Description</h2>
<p>This module is dedicated to square fiducial markers (also known as Augmented Reality Markers) These markers are useful for easy, fast and robust camera pose estimation.ç</p>
<p>The main functionalities are:</p><ul>
<li>Detection of markers in an image</li>
<li>Pose estimation from a single marker or from a board/set of markers</li>
<li>Detection of ChArUco board for high subpixel accuracy</li>
<li>Camera calibration from both, ArUco boards and ChArUco boards.</li>
<li>Detection of ChArUco diamond markers The samples directory includes easy examples of how to use the module.</li>
</ul>
<p>The implementation is based on the ArUco Library by R. Muñoz-Salinas and S. Garrido-Jurado <a class="el" href="../../d0/de3/citelist.html#CITEREF_Aruco2014">[85]</a>.</p>
<p>Markers can also be detected based on the AprilTag 2 <a class="el" href="../../d0/de3/citelist.html#CITEREF_wang2016iros">[267]</a> fiducial detection method.</p>
<dl class="section see"><dt>See also</dt><dd>S. Garrido-Jurado, R. Muñoz-Salinas, F. J. Madrid-Cuevas, and M. J. Marín-Jiménez. 2014. "Automatic generation and detection of highly reliable fiducial markers under occlusion". Pattern Recogn. 47, 6 (June 2014), 2280-2292. DOI=10.1016/j.patcog.2014.01.005</dd>
<dd>
<a href="http://www.uco.es/investiga/grupos/ava/node/26">http://www.uco.es/investiga/grupos/ava/node/26</a></dd></dl>
<p>This module has been originally developed by Sergio Garrido-Jurado as a project for Google Summer of Code 2015 (GSoC 15). </p>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a id="gafce26321f39d331bc12032a72b90eda6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gafce26321f39d331bc12032a72b90eda6">◆ </a></span>CornerRefineMethod</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="../../d9/d6a/group__aruco.html#gafce26321f39d331bc12032a72b90eda6">cv::aruco::CornerRefineMethod</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d53/aruco_8hpp.html">opencv2/aruco.hpp</a>&gt;</code></p>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ggafce26321f39d331bc12032a72b90eda6adaab47b5a6c1a9519c31cd911799f397"></a>CORNER_REFINE_NONE <div class="python_language">Python: cv.aruco.CORNER_REFINE_NONE</div></td><td class="fielddoc"><p>Tag and corners detection based on the ArUco approach. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggafce26321f39d331bc12032a72b90eda6a62ae78cbc223dfe552c99adbc9002e5b"></a>CORNER_REFINE_SUBPIX <div class="python_language">Python: cv.aruco.CORNER_REFINE_SUBPIX</div></td><td class="fielddoc"><p>ArUco approach and refine the corners locations using corner subpixel accuracy. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggafce26321f39d331bc12032a72b90eda6abef4b459cc329a3ab839773c0805e66a"></a>CORNER_REFINE_CONTOUR <div class="python_language">Python: cv.aruco.CORNER_REFINE_CONTOUR</div></td><td class="fielddoc"><p>ArUco approach and refine the corners locations using the contour-points line fitting. </p>
</td></tr>
<tr><td class="fieldname"><a id="ggafce26321f39d331bc12032a72b90eda6a3e940dda27d11e803b40b51bde40f2c5"></a>CORNER_REFINE_APRILTAG <div class="python_language">Python: cv.aruco.CORNER_REFINE_APRILTAG</div></td><td class="fielddoc"><p>Tag and corners detection based on the AprilTag 2 approach <a class="el" href="../../d0/de3/citelist.html#CITEREF_wang2016iros">[267]</a>. </p>
</td></tr>
</table>
</div>
</div>
<a id="gac84398a9ed9dd01306592dd616c2c975"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gac84398a9ed9dd01306592dd616c2c975">◆ </a></span>PREDEFINED_DICTIONARY_NAME</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="../../d9/d6a/group__aruco.html#gac84398a9ed9dd01306592dd616c2c975">cv::aruco::PREDEFINED_DICTIONARY_NAME</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../dc/df7/dictionary_8hpp.html">opencv2/aruco/dictionary.hpp</a>&gt;</code></p>
<p>Predefined markers dictionaries/sets Each dictionary indicates the number of bits and the number of markers contained. </p>
<ul>
<li>DICT_ARUCO_ORIGINAL: standard ArUco Library Markers. 1024 markers, 5x5 bits, 0 minimum distance </li>
</ul>
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975ada8e830ff0024e839e93c01f5fed0c55"></a>DICT_4X4_50 <div class="python_language">Python: cv.aruco.DICT_4X4_50</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a6df6c3ad38ac44ea1546ef4f4841f310"></a>DICT_4X4_100 <div class="python_language">Python: cv.aruco.DICT_4X4_100</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975ab76bdd5591c56a72b4359f7e34b0d681"></a>DICT_4X4_250 <div class="python_language">Python: cv.aruco.DICT_4X4_250</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a395a8309569c1977538fd11b57752087"></a>DICT_4X4_1000 <div class="python_language">Python: cv.aruco.DICT_4X4_1000</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a37f2f428fbac13d12e90c47e8c6fc8d1"></a>DICT_5X5_50 <div class="python_language">Python: cv.aruco.DICT_5X5_50</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a85cd9c2830621caeeda490d059bc2743"></a>DICT_5X5_100 <div class="python_language">Python: cv.aruco.DICT_5X5_100</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975aeef63448bb93975855db174da8d4e008"></a>DICT_5X5_250 <div class="python_language">Python: cv.aruco.DICT_5X5_250</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a74a4638c42518ef99248639169b4f96b"></a>DICT_5X5_1000 <div class="python_language">Python: cv.aruco.DICT_5X5_1000</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975ad5b25a02c860debd3cba97975b90cc1e"></a>DICT_6X6_50 <div class="python_language">Python: cv.aruco.DICT_6X6_50</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a033f9561c7bd604f70912ecb9a49fee2"></a>DICT_6X6_100 <div class="python_language">Python: cv.aruco.DICT_6X6_100</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a6eb1a3e9c94c7123d8b1904a57193f16"></a>DICT_6X6_250 <div class="python_language">Python: cv.aruco.DICT_6X6_250</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a9f3ab829fb35fc9ff30e8f809d318e03"></a>DICT_6X6_1000 <div class="python_language">Python: cv.aruco.DICT_6X6_1000</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a7c9044100bd1cc60d41473c4cd9cb683"></a>DICT_7X7_50 <div class="python_language">Python: cv.aruco.DICT_7X7_50</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a5a3270f81a64936b79e8e9712187b85d"></a>DICT_7X7_100 <div class="python_language">Python: cv.aruco.DICT_7X7_100</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a69192aa267e8624d8a886d8a875fcfa6"></a>DICT_7X7_250 <div class="python_language">Python: cv.aruco.DICT_7X7_250</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a91dc783a8d4adc55a8ff8b48212a1c27"></a>DICT_7X7_1000 <div class="python_language">Python: cv.aruco.DICT_7X7_1000</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a6c2a6d747864ef4daad8cdeffa07f7c0"></a>DICT_ARUCO_ORIGINAL <div class="python_language">Python: cv.aruco.DICT_ARUCO_ORIGINAL</div></td><td class="fielddoc"></td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a6235dfb8007de53d3e8de11bee1e3854"></a>DICT_APRILTAG_16h5 <div class="python_language">Python: cv.aruco.DICT_APRILTAG_16h5</div></td><td class="fielddoc"><p>4x4 bits, minimum hamming distance between any two codes = 5, 30 codes </p>
</td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a52c8d2fe982b65dda93dd70e3d18be30"></a>DICT_APRILTAG_25h9 <div class="python_language">Python: cv.aruco.DICT_APRILTAG_25h9</div></td><td class="fielddoc"><p>5x5 bits, minimum hamming distance between any two codes = 9, 35 codes </p>
</td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975ad2f28bef0b2b725e592bce9cd34183e9"></a>DICT_APRILTAG_36h10 <div class="python_language">Python: cv.aruco.DICT_APRILTAG_36h10</div></td><td class="fielddoc"><p>6x6 bits, minimum hamming distance between any two codes = 10, 2320 codes </p>
</td></tr>
<tr><td class="fieldname"><a id="ggac84398a9ed9dd01306592dd616c2c975a8e9e65926cdf4898a760b3dfd9daf989"></a>DICT_APRILTAG_36h11 <div class="python_language">Python: cv.aruco.DICT_APRILTAG_36h11</div></td><td class="fielddoc"><p>6x6 bits, minimum hamming distance between any two codes = 11, 587 codes </p>
</td></tr>
</table>
</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a id="gace9580fe2e04beebd3ed57d413a72552"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gace9580fe2e04beebd3ed57d413a72552">◆ </a></span>_drawPlanarBoardImpl()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::aruco::_drawPlanarBoardImpl </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html">Board</a> * </td>
          <td class="paramname"><em>board</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> </td>
          <td class="paramname"><em>outSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>img</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>marginSize</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>borderBits</em> = <code>1</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d53/aruco_8hpp.html">opencv2/aruco.hpp</a>&gt;</code></p>
<p>Implementation of drawPlanarBoard that accepts a raw <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html" title="Board of markers. ">Board</a> pointer. </p>
</div>
</div>
<a id="gacf03e5afb0bc516b73028cf209984a06"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacf03e5afb0bc516b73028cf209984a06">◆ </a></span>calibrateCameraAruco() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double cv::aruco::calibrateCameraAruco </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> </td>
          <td class="paramname"><em>corners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>ids</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>counter</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html">Board</a> &gt; &amp; </td>
          <td class="paramname"><em>board</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> </td>
          <td class="paramname"><em>imageSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>cameraMatrix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>distCoeffs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> </td>
          <td class="paramname"><em>rvecs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> </td>
          <td class="paramname"><em>tvecs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>stdDeviationsIntrinsics</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>stdDeviationsExtrinsics</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>perViewErrors</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>flags</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a> </td>
          <td class="paramname"><em>criteria</em> = <code><a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a>(<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57aeb9da694ea67b3ef7d524521b580867d">TermCriteria::COUNT</a>+<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57a857609e73e7028e638d2ea649f3b45d5">TermCriteria::EPS</a>, 30, DBL_EPSILON)</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval, cameraMatrix, distCoeffs, rvecs, tvecs</td><td>=</td><td>cv.aruco.calibrateCameraAruco(</td><td class="paramname">corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, flags[, criteria]]]]</td><td>)</td></tr><tr><td style="width: 20px;"></td><td>retval, cameraMatrix, distCoeffs, rvecs, tvecs, stdDeviationsIntrinsics, stdDeviationsExtrinsics, perViewErrors</td><td>=</td><td>cv.aruco.calibrateCameraArucoExtended(</td><td class="paramname">corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, stdDeviationsIntrinsics[, stdDeviationsExtrinsics[, perViewErrors[, flags[, criteria]]]]]]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d53/aruco_8hpp.html">opencv2/aruco.hpp</a>&gt;</code></p>
<p>Calibrate a camera using aruco markers. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">corners</td><td>vector of detected marker corners in all frames. The corners should have the same format returned by detectMarkers (see <a class="el" href="../../d9/d6a/group__aruco.html#gab9159aa69250d8d3642593e508cb6baa" title="Basic marker detection. ">detectMarkers</a>). </td></tr>
    <tr><td class="paramname">ids</td><td>list of identifiers for each marker in corners </td></tr>
    <tr><td class="paramname">counter</td><td>number of markers in each frame so that corners and ids can be split </td></tr>
    <tr><td class="paramname">board</td><td>Marker <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html" title="Board of markers. ">Board</a> layout </td></tr>
    <tr><td class="paramname">imageSize</td><td>Size of the image used only to initialize the intrinsic camera matrix. </td></tr>
    <tr><td class="paramname">cameraMatrix</td><td>Output 3x3 floating-point camera matrix \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) . If CV_CALIB_USE_INTRINSIC_GUESS and/or CV_CALIB_FIX_ASPECT_RATIO are specified, some or all of fx, fy, cx, cy must be initialized before calling the function. </td></tr>
    <tr><td class="paramname">distCoeffs</td><td>Output vector of distortion coefficients \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements </td></tr>
    <tr><td class="paramname">rvecs</td><td>Output vector of rotation vectors (see Rodrigues ) estimated for each board view (e.g. std::vector&lt;cv::Mat&gt;&gt;). That is, each k-th rotation vector together with the corresponding k-th translation vector (see the next output parameter description) brings the board pattern from the model coordinate space (in which object points are specified) to the world coordinate space, that is, a real position of the board pattern in the k-th pattern view (k=0.. <em>M</em> -1). </td></tr>
    <tr><td class="paramname">tvecs</td><td>Output vector of translation vectors estimated for each pattern view. </td></tr>
    <tr><td class="paramname">stdDeviationsIntrinsics</td><td>Output vector of standard deviations estimated for intrinsic parameters. Order of deviations values: \((f_x, f_y, c_x, c_y, k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6 , s_1, s_2, s_3, s_4, \tau_x, \tau_y)\) If one of parameters is not estimated, it's deviation is equals to zero. </td></tr>
    <tr><td class="paramname">stdDeviationsExtrinsics</td><td>Output vector of standard deviations estimated for extrinsic parameters. Order of deviations values: \((R_1, T_1, \dotsc , R_M, T_M)\) where M is number of pattern views, \(R_i, T_i\) are concatenated 1x3 vectors. </td></tr>
    <tr><td class="paramname">perViewErrors</td><td>Output vector of average re-projection errors estimated for each pattern view. </td></tr>
    <tr><td class="paramname">flags</td><td>flags Different flags for the calibration process (see <a class="el" href="../../d9/d0c/group__calib3d.html#ga3207604e4b1a1758aa66acb6ed5aa65d" title="Finds the camera intrinsic and extrinsic parameters from several views of a calibration pattern...">calibrateCamera</a> for details). </td></tr>
    <tr><td class="paramname">criteria</td><td>Termination criteria for the iterative optimization algorithm.</td></tr>
  </table>
  </dd>
</dl>
<p>This function calibrates a camera using an Aruco <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html" title="Board of markers. ">Board</a>. The function receives a list of detected markers from several views of the <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html" title="Board of markers. ">Board</a>. The process is similar to the chessboard calibration in <a class="el" href="../../d9/d0c/group__calib3d.html#ga3207604e4b1a1758aa66acb6ed5aa65d" title="Finds the camera intrinsic and extrinsic parameters from several views of a calibration pattern...">calibrateCamera()</a>. The function returns the final re-projection error. </p>
</div>
</div>
<a id="ga5cb94cb60821894039dbb902ec42d835"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga5cb94cb60821894039dbb902ec42d835">◆ </a></span>calibrateCameraAruco() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double cv::aruco::calibrateCameraAruco </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> </td>
          <td class="paramname"><em>corners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>ids</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>counter</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html">Board</a> &gt; &amp; </td>
          <td class="paramname"><em>board</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> </td>
          <td class="paramname"><em>imageSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>cameraMatrix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>distCoeffs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> </td>
          <td class="paramname"><em>rvecs</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> </td>
          <td class="paramname"><em>tvecs</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>flags</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a> </td>
          <td class="paramname"><em>criteria</em> = <code><a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a>(<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57aeb9da694ea67b3ef7d524521b580867d">TermCriteria::COUNT</a>+<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57a857609e73e7028e638d2ea649f3b45d5">TermCriteria::EPS</a>, 30, DBL_EPSILON)</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval, cameraMatrix, distCoeffs, rvecs, tvecs</td><td>=</td><td>cv.aruco.calibrateCameraAruco(</td><td class="paramname">corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, flags[, criteria]]]]</td><td>)</td></tr><tr><td style="width: 20px;"></td><td>retval, cameraMatrix, distCoeffs, rvecs, tvecs, stdDeviationsIntrinsics, stdDeviationsExtrinsics, perViewErrors</td><td>=</td><td>cv.aruco.calibrateCameraArucoExtended(</td><td class="paramname">corners, ids, counter, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, stdDeviationsIntrinsics[, stdDeviationsExtrinsics[, perViewErrors[, flags[, criteria]]]]]]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d53/aruco_8hpp.html">opencv2/aruco.hpp</a>&gt;</code></p>
<p>It's the same function as <a class="el" href="../../d9/d6a/group__aruco.html#gacf03e5afb0bc516b73028cf209984a06" title="Calibrate a camera using aruco markers. ">calibrateCameraAruco</a> but without calibration error estimation. </p>
</div>
</div>
<a id="ga54cf81c2e39119a84101258338aa7383"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga54cf81c2e39119a84101258338aa7383">◆ </a></span>calibrateCameraCharuco() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double cv::aruco::calibrateCameraCharuco </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> </td>
          <td class="paramname"><em>charucoCorners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> </td>
          <td class="paramname"><em>charucoIds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d0/d3c/classcv_1_1aruco_1_1CharucoBoard.html">CharucoBoard</a> &gt; &amp; </td>
          <td class="paramname"><em>board</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> </td>
          <td class="paramname"><em>imageSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>cameraMatrix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>distCoeffs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> </td>
          <td class="paramname"><em>rvecs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> </td>
          <td class="paramname"><em>tvecs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>stdDeviationsIntrinsics</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>stdDeviationsExtrinsics</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>perViewErrors</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>flags</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a> </td>
          <td class="paramname"><em>criteria</em> = <code><a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a>(<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57aeb9da694ea67b3ef7d524521b580867d">TermCriteria::COUNT</a>+<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57a857609e73e7028e638d2ea649f3b45d5">TermCriteria::EPS</a>, 30, DBL_EPSILON)</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval, cameraMatrix, distCoeffs, rvecs, tvecs</td><td>=</td><td>cv.aruco.calibrateCameraCharuco(</td><td class="paramname">charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, flags[, criteria]]]]</td><td>)</td></tr><tr><td style="width: 20px;"></td><td>retval, cameraMatrix, distCoeffs, rvecs, tvecs, stdDeviationsIntrinsics, stdDeviationsExtrinsics, perViewErrors</td><td>=</td><td>cv.aruco.calibrateCameraCharucoExtended(</td><td class="paramname">charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, stdDeviationsIntrinsics[, stdDeviationsExtrinsics[, perViewErrors[, flags[, criteria]]]]]]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../da/d3b/charuco_8hpp.html">opencv2/aruco/charuco.hpp</a>&gt;</code></p>
<p>Calibrate a camera using Charuco corners. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">charucoCorners</td><td>vector of detected charuco corners per frame </td></tr>
    <tr><td class="paramname">charucoIds</td><td>list of identifiers for each corner in charucoCorners per frame </td></tr>
    <tr><td class="paramname">board</td><td>Marker <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html" title="Board of markers. ">Board</a> layout </td></tr>
    <tr><td class="paramname">imageSize</td><td>input image size </td></tr>
    <tr><td class="paramname">cameraMatrix</td><td>Output 3x3 floating-point camera matrix \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) . If CV_CALIB_USE_INTRINSIC_GUESS and/or CV_CALIB_FIX_ASPECT_RATIO are specified, some or all of fx, fy, cx, cy must be initialized before calling the function. </td></tr>
    <tr><td class="paramname">distCoeffs</td><td>Output vector of distortion coefficients \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements </td></tr>
    <tr><td class="paramname">rvecs</td><td>Output vector of rotation vectors (see Rodrigues ) estimated for each board view (e.g. std::vector&lt;cv::Mat&gt;&gt;). That is, each k-th rotation vector together with the corresponding k-th translation vector (see the next output parameter description) brings the board pattern from the model coordinate space (in which object points are specified) to the world coordinate space, that is, a real position of the board pattern in the k-th pattern view (k=0.. <em>M</em> -1). </td></tr>
    <tr><td class="paramname">tvecs</td><td>Output vector of translation vectors estimated for each pattern view. </td></tr>
    <tr><td class="paramname">stdDeviationsIntrinsics</td><td>Output vector of standard deviations estimated for intrinsic parameters. Order of deviations values: \((f_x, f_y, c_x, c_y, k_1, k_2, p_1, p_2, k_3, k_4, k_5, k_6 , s_1, s_2, s_3, s_4, \tau_x, \tau_y)\) If one of parameters is not estimated, it's deviation is equals to zero. </td></tr>
    <tr><td class="paramname">stdDeviationsExtrinsics</td><td>Output vector of standard deviations estimated for extrinsic parameters. Order of deviations values: \((R_1, T_1, \dotsc , R_M, T_M)\) where M is number of pattern views, \(R_i, T_i\) are concatenated 1x3 vectors. </td></tr>
    <tr><td class="paramname">perViewErrors</td><td>Output vector of average re-projection errors estimated for each pattern view. </td></tr>
    <tr><td class="paramname">flags</td><td>flags Different flags for the calibration process (see <a class="el" href="../../d9/d0c/group__calib3d.html#ga3207604e4b1a1758aa66acb6ed5aa65d" title="Finds the camera intrinsic and extrinsic parameters from several views of a calibration pattern...">calibrateCamera</a> for details). </td></tr>
    <tr><td class="paramname">criteria</td><td>Termination criteria for the iterative optimization algorithm.</td></tr>
  </table>
  </dd>
</dl>
<p>This function calibrates a camera using a set of corners of a Charuco <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html" title="Board of markers. ">Board</a>. The function receives a list of detected corners and its identifiers from several views of the <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html" title="Board of markers. ">Board</a>. The function returns the final re-projection error. </p>
</div>
</div>
<a id="gabefb98f7f2c74c98574fd50711c5349d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gabefb98f7f2c74c98574fd50711c5349d">◆ </a></span>calibrateCameraCharuco() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">double cv::aruco::calibrateCameraCharuco </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> </td>
          <td class="paramname"><em>charucoCorners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> </td>
          <td class="paramname"><em>charucoIds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d0/d3c/classcv_1_1aruco_1_1CharucoBoard.html">CharucoBoard</a> &gt; &amp; </td>
          <td class="paramname"><em>board</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> </td>
          <td class="paramname"><em>imageSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>cameraMatrix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>distCoeffs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> </td>
          <td class="paramname"><em>rvecs</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> </td>
          <td class="paramname"><em>tvecs</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>flags</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a> </td>
          <td class="paramname"><em>criteria</em> = <code><a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html">TermCriteria</a>(<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57aeb9da694ea67b3ef7d524521b580867d">TermCriteria::COUNT</a>+<a class="el" href="../../d9/d5d/classcv_1_1TermCriteria.html#a56fecdc291ccaba8aad27d67ccf72c57a857609e73e7028e638d2ea649f3b45d5">TermCriteria::EPS</a>, 30, DBL_EPSILON)</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval, cameraMatrix, distCoeffs, rvecs, tvecs</td><td>=</td><td>cv.aruco.calibrateCameraCharuco(</td><td class="paramname">charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, flags[, criteria]]]]</td><td>)</td></tr><tr><td style="width: 20px;"></td><td>retval, cameraMatrix, distCoeffs, rvecs, tvecs, stdDeviationsIntrinsics, stdDeviationsExtrinsics, perViewErrors</td><td>=</td><td>cv.aruco.calibrateCameraCharucoExtended(</td><td class="paramname">charucoCorners, charucoIds, board, imageSize, cameraMatrix, distCoeffs[, rvecs[, tvecs[, stdDeviationsIntrinsics[, stdDeviationsExtrinsics[, perViewErrors[, flags[, criteria]]]]]]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../da/d3b/charuco_8hpp.html">opencv2/aruco/charuco.hpp</a>&gt;</code></p>
<p>It's the same function as <a class="el" href="../../d9/d6a/group__aruco.html#ga54cf81c2e39119a84101258338aa7383" title="Calibrate a camera using Charuco corners. ">calibrateCameraCharuco</a> but without calibration error estimation. </p>
</div>
</div>
<a id="gaade474aa951d02470c34ddbb91d851ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaade474aa951d02470c34ddbb91d851ea">◆ </a></span>detectCharucoDiamond()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::aruco::detectCharucoDiamond </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> </td>
          <td class="paramname"><em>markerCorners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>markerIds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>squareMarkerLengthRate</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> </td>
          <td class="paramname"><em>diamondCorners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>diamondIds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>cameraMatrix</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>distCoeffs</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>diamondCorners, diamondIds</td><td>=</td><td>cv.aruco.detectCharucoDiamond(</td><td class="paramname">image, markerCorners, markerIds, squareMarkerLengthRate[, diamondCorners[, diamondIds[, cameraMatrix[, distCoeffs]]]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../da/d3b/charuco_8hpp.html">opencv2/aruco/charuco.hpp</a>&gt;</code></p>
<p>Detect ChArUco Diamond markers. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">image</td><td>input image necessary for corner subpixel. </td></tr>
    <tr><td class="paramname">markerCorners</td><td>list of detected marker corners from detectMarkers function. </td></tr>
    <tr><td class="paramname">markerIds</td><td>list of marker ids in markerCorners. </td></tr>
    <tr><td class="paramname">squareMarkerLengthRate</td><td>rate between square and marker length: squareMarkerLengthRate = squareLength/markerLength. The real units are not necessary. </td></tr>
    <tr><td class="paramname">diamondCorners</td><td>output list of detected diamond corners (4 corners per diamond). The order is the same than in marker corners: top left, top right, bottom right and bottom left. Similar format than the corners returned by detectMarkers (e.g std::vector&lt;std::vector&lt;cv::Point2f&gt; &gt; ). </td></tr>
    <tr><td class="paramname">diamondIds</td><td>ids of the diamonds in diamondCorners. The id of each diamond is in fact of type Vec4i, so each diamond has 4 ids, which are the ids of the aruco markers composing the diamond. </td></tr>
    <tr><td class="paramname">cameraMatrix</td><td>Optional camera calibration matrix. </td></tr>
    <tr><td class="paramname">distCoeffs</td><td>Optional camera distortion coefficients.</td></tr>
  </table>
  </dd>
</dl>
<p>This function detects Diamond markers from the previous detected ArUco markers. The diamonds are returned in the diamondCorners and diamondIds parameters. If camera calibration parameters are provided, the diamond search is based on reprojection. If not, diamond search is based on homography. Homography is faster than reprojection but can slightly reduce the detection rate. </p>
</div>
</div>
<a id="gab9159aa69250d8d3642593e508cb6baa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab9159aa69250d8d3642593e508cb6baa">◆ </a></span>detectMarkers()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::aruco::detectMarkers </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a> &gt; &amp; </td>
          <td class="paramname"><em>dictionary</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> </td>
          <td class="paramname"><em>corners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>ids</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d1/dcd/structcv_1_1aruco_1_1DetectorParameters.html">DetectorParameters</a> &gt; &amp; </td>
          <td class="paramname"><em>parameters</em> = <code><a class="el" href="../../d1/dcd/structcv_1_1aruco_1_1DetectorParameters.html#aca7a04c0d23b3e1c575e11af697d506c">DetectorParameters::create</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga889a09549b98223016170d9b613715de">OutputArrayOfArrays</a> </td>
          <td class="paramname"><em>rejectedImgPoints</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>cameraMatrix</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>distCoeff</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>corners, ids, rejectedImgPoints</td><td>=</td><td>cv.aruco.detectMarkers(</td><td class="paramname">image, dictionary[, corners[, ids[, parameters[, rejectedImgPoints[, cameraMatrix[, distCoeff]]]]]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d53/aruco_8hpp.html">opencv2/aruco.hpp</a>&gt;</code></p>
<p>Basic marker detection. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">image</td><td>input image </td></tr>
    <tr><td class="paramname">dictionary</td><td>indicates the type of markers that will be searched </td></tr>
    <tr><td class="paramname">corners</td><td>vector of detected marker corners. For each marker, its four corners are provided, (e.g std::vector&lt;std::vector&lt;cv::Point2f&gt; &gt; ). For N detected markers, the dimensions of this array is Nx4. The order of the corners is clockwise. </td></tr>
    <tr><td class="paramname">ids</td><td>vector of identifiers of the detected markers. The identifier is of type int (e.g. std::vector&lt;int&gt;). For N detected markers, the size of ids is also N. The identifiers have the same order than the markers in the imgPoints array. </td></tr>
    <tr><td class="paramname">parameters</td><td>marker detection parameters </td></tr>
    <tr><td class="paramname">rejectedImgPoints</td><td>contains the imgPoints of those squares whose inner code has not a correct codification. Useful for debugging purposes. </td></tr>
    <tr><td class="paramname">cameraMatrix</td><td>optional input 3x3 floating-point camera matrix \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) </td></tr>
    <tr><td class="paramname">distCoeff</td><td>optional vector of distortion coefficients \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements</td></tr>
  </table>
  </dd>
</dl>
<p>Performs marker detection in the input image. Only markers included in the specific dictionary are searched. For each detected marker, it returns the 2D position of its corner in the image and its corresponding identifier. Note that this function does not perform pose estimation. </p><dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d9/d6a/group__aruco.html#ga84dd2e88f3e8c3255eb78e0f79571bd1" title="Pose estimation for single markers. ">estimatePoseSingleMarkers</a>, <a class="el" href="../../d9/d6a/group__aruco.html#ga366993d29fdddd995fba8c2e6ca811ea" title="Pose estimation for a board of markers. ">estimatePoseBoard</a> </dd></dl>
</div>
</div>
<a id="ga16fda651a4e6a8f5747a85cbb6b400a2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga16fda651a4e6a8f5747a85cbb6b400a2">◆ </a></span>drawAxis()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::aruco::drawAxis </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>cameraMatrix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>distCoeffs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>rvec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>tvec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>length</em> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>image</td><td>=</td><td>cv.aruco.drawAxis(</td><td class="paramname">image, cameraMatrix, distCoeffs, rvec, tvec, length</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d53/aruco_8hpp.html">opencv2/aruco.hpp</a>&gt;</code></p>
<p>Draw coordinate system axis from pose estimation. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">image</td><td>input/output image. It must have 1 or 3 channels. The number of channels is not altered. </td></tr>
    <tr><td class="paramname">cameraMatrix</td><td>input 3x3 floating-point camera matrix \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) </td></tr>
    <tr><td class="paramname">distCoeffs</td><td>vector of distortion coefficients \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements </td></tr>
    <tr><td class="paramname">rvec</td><td>rotation vector of the coordinate system that will be drawn. (</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d9/d0c/group__calib3d.html#ga61585db663d9da06b68e70cfbf6a1eac" title="Converts a rotation matrix to a rotation vector or vice versa. ">Rodrigues</a>). </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">tvec</td><td>translation vector of the coordinate system that will be drawn. </td></tr>
    <tr><td class="paramname">length</td><td>length of the painted axis in the same unit than tvec (usually in meters)</td></tr>
  </table>
  </dd>
</dl>
<p>Given the pose estimation of a marker or board, this function draws the axis of the world coordinate system, i.e. the system centered on the marker/board. Useful for debugging purposes.</p>
<dl class="deprecated"><dt><b><a class="el" href="../../da/d58/deprecated.html#_deprecated000056">Deprecated:</a></b></dt><dd>use <a class="el" href="../../d9/d0c/group__calib3d.html#gab3ab7bb2bdfe7d5d9745bb92d13f9564" title="Draw axes of the world/object coordinate system from pose estimation. ">cv::drawFrameAxes</a> </dd></dl>
<dl><dt><b>Examples: </b></dt><dd><a class="el" href="../../da/d94/samples_2cpp_2tutorial_code_2ml_2introduction_to_pca_2introduction_to_pca_8cpp-example.html#a0">samples/cpp/tutorial_code/ml/introduction_to_pca/introduction_to_pca.cpp</a>.</dd>
</dl>
</div>
</div>
<a id="gaf71fb897d5f03f7424c0c84715aa6228"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf71fb897d5f03f7424c0c84715aa6228">◆ </a></span>drawCharucoDiamond()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::aruco::drawCharucoDiamond </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a> &gt; &amp; </td>
          <td class="paramname"><em>dictionary</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga94ce799099ae6cdd66685e3fd0cad7d7">Vec4i</a> </td>
          <td class="paramname"><em>ids</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>squareLength</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>markerLength</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>img</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>marginSize</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>borderBits</em> = <code>1</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../da/d3b/charuco_8hpp.html">opencv2/aruco/charuco.hpp</a>&gt;</code></p>
<p>Draw a ChArUco Diamond marker. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">dictionary</td><td>dictionary of markers indicating the type of markers. </td></tr>
    <tr><td class="paramname">ids</td><td>list of 4 ids for each ArUco marker in the ChArUco marker. </td></tr>
    <tr><td class="paramname">squareLength</td><td>size of the chessboard squares in pixels. </td></tr>
    <tr><td class="paramname">markerLength</td><td>size of the markers in pixels. </td></tr>
    <tr><td class="paramname">img</td><td>output image with the marker. The size of this image will be 3*squareLength + 2*marginSize,. </td></tr>
    <tr><td class="paramname">marginSize</td><td>minimum margins (in pixels) of the marker in the output image </td></tr>
    <tr><td class="paramname">borderBits</td><td>width of the marker borders.</td></tr>
  </table>
  </dd>
</dl>
<p>This function return the image of a ChArUco marker, ready to be printed. </p>
</div>
</div>
<a id="ga7225eee644190f791e1583c499b7ab10"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga7225eee644190f791e1583c499b7ab10">◆ </a></span>drawDetectedCornersCharuco()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::aruco::drawDetectedCornersCharuco </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>charucoCorners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>charucoIds</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga599fe92e910c027be274233eccad7beb">Scalar</a> </td>
          <td class="paramname"><em>cornerColor</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#ga599fe92e910c027be274233eccad7beb">Scalar</a>(255, 0, 0)</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>image</td><td>=</td><td>cv.aruco.drawDetectedCornersCharuco(</td><td class="paramname">image, charucoCorners[, charucoIds[, cornerColor]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../da/d3b/charuco_8hpp.html">opencv2/aruco/charuco.hpp</a>&gt;</code></p>
<p>Draws a set of Charuco corners. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">image</td><td>input/output image. It must have 1 or 3 channels. The number of channels is not altered. </td></tr>
    <tr><td class="paramname">charucoCorners</td><td>vector of detected charuco corners </td></tr>
    <tr><td class="paramname">charucoIds</td><td>list of identifiers for each corner in charucoCorners </td></tr>
    <tr><td class="paramname">cornerColor</td><td>color of the square surrounding each corner</td></tr>
  </table>
  </dd>
</dl>
<p>This function draws a set of detected Charuco corners. If identifiers vector is provided, it also draws the id of each corner. </p>
</div>
</div>
<a id="ga0dbf27203267fb8e9f282554cf0d3433"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0dbf27203267fb8e9f282554cf0d3433">◆ </a></span>drawDetectedDiamonds()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::aruco::drawDetectedDiamonds </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> </td>
          <td class="paramname"><em>diamondCorners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>diamondIds</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga599fe92e910c027be274233eccad7beb">Scalar</a> </td>
          <td class="paramname"><em>borderColor</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#ga599fe92e910c027be274233eccad7beb">Scalar</a>(0, 0, 255)</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>image</td><td>=</td><td>cv.aruco.drawDetectedDiamonds(</td><td class="paramname">image, diamondCorners[, diamondIds[, borderColor]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../da/d3b/charuco_8hpp.html">opencv2/aruco/charuco.hpp</a>&gt;</code></p>
<p>Draw a set of detected ChArUco Diamond markers. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">image</td><td>input/output image. It must have 1 or 3 channels. The number of channels is not altered. </td></tr>
    <tr><td class="paramname">diamondCorners</td><td>positions of diamond corners in the same format returned by <a class="el" href="../../d9/d6a/group__aruco.html#gaade474aa951d02470c34ddbb91d851ea" title="Detect ChArUco Diamond markers. ">detectCharucoDiamond()</a>. (e.g std::vector&lt;std::vector&lt;cv::Point2f&gt; &gt; ). For N detected markers, the dimensions of this array should be Nx4. The order of the corners should be clockwise. </td></tr>
    <tr><td class="paramname">diamondIds</td><td>vector of identifiers for diamonds in diamondCorners, in the same format returned by <a class="el" href="../../d9/d6a/group__aruco.html#gaade474aa951d02470c34ddbb91d851ea" title="Detect ChArUco Diamond markers. ">detectCharucoDiamond()</a> (e.g. std::vector&lt;Vec4i&gt;). Optional, if not provided, ids are not painted. </td></tr>
    <tr><td class="paramname">borderColor</td><td>color of marker borders. Rest of colors (text color and first corner color) are calculated based on this one.</td></tr>
  </table>
  </dd>
</dl>
<p>Given an array of detected diamonds, this functions draws them in the image. The marker borders are painted and the markers identifiers if provided. Useful for debugging purposes. </p>
</div>
</div>
<a id="ga2ad34b0f277edebb6a132d3069ed2909"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga2ad34b0f277edebb6a132d3069ed2909">◆ </a></span>drawDetectedMarkers()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::aruco::drawDetectedMarkers </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> </td>
          <td class="paramname"><em>corners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>ids</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga599fe92e910c027be274233eccad7beb">Scalar</a> </td>
          <td class="paramname"><em>borderColor</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#ga599fe92e910c027be274233eccad7beb">Scalar</a>(0, 255, 0)</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>image</td><td>=</td><td>cv.aruco.drawDetectedMarkers(</td><td class="paramname">image, corners[, ids[, borderColor]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d53/aruco_8hpp.html">opencv2/aruco.hpp</a>&gt;</code></p>
<p>Draw detected markers in image. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">image</td><td>input/output image. It must have 1 or 3 channels. The number of channels is not altered. </td></tr>
    <tr><td class="paramname">corners</td><td>positions of marker corners on input image. (e.g std::vector&lt;std::vector&lt;cv::Point2f&gt; &gt; ). For N detected markers, the dimensions of this array should be Nx4. The order of the corners should be clockwise. </td></tr>
    <tr><td class="paramname">ids</td><td>vector of identifiers for markers in markersCorners . Optional, if not provided, ids are not painted. </td></tr>
    <tr><td class="paramname">borderColor</td><td>color of marker borders. Rest of colors (text color and first corner color) are calculated based on this one to improve visualization.</td></tr>
  </table>
  </dd>
</dl>
<p>Given an array of detected marker corners and its corresponding ids, this functions draws the markers in the image. The marker borders are painted and the markers identifiers if provided. Useful for debugging purposes. </p>
</div>
</div>
<a id="ga254ed245e10c5b3e2259d5d9b8ea8e2f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga254ed245e10c5b3e2259d5d9b8ea8e2f">◆ </a></span>drawMarker()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::aruco::drawMarker </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a> &gt; &amp; </td>
          <td class="paramname"><em>dictionary</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>id</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>sidePixels</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>img</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>borderBits</em> = <code>1</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>img</td><td>=</td><td>cv.aruco.drawMarker(</td><td class="paramname">dictionary, id, sidePixels[, img[, borderBits]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d53/aruco_8hpp.html">opencv2/aruco.hpp</a>&gt;</code></p>
<p>Draw a canonical marker image. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">dictionary</td><td>dictionary of markers indicating the type of markers </td></tr>
    <tr><td class="paramname">id</td><td>identifier of the marker that will be returned. It has to be a valid id in the specified dictionary. </td></tr>
    <tr><td class="paramname">sidePixels</td><td>size of the image in pixels </td></tr>
    <tr><td class="paramname">img</td><td>output image with the marker </td></tr>
    <tr><td class="paramname">borderBits</td><td>width of the marker border.</td></tr>
  </table>
  </dd>
</dl>
<p>This function returns a marker image in its canonical form (i.e. ready to be printed) </p>
</div>
</div>
<a id="gacc98e7993d9f78c9eb1250f030896e85"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gacc98e7993d9f78c9eb1250f030896e85">◆ </a></span>drawPlanarBoard()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::aruco::drawPlanarBoard </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html">Board</a> &gt; &amp; </td>
          <td class="paramname"><em>board</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga346f563897249351a34549137c8532a0">Size</a> </td>
          <td class="paramname"><em>outSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>img</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>marginSize</em> = <code>0</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>borderBits</em> = <code>1</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>img</td><td>=</td><td>cv.aruco.drawPlanarBoard(</td><td class="paramname">board, outSize[, img[, marginSize[, borderBits]]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d53/aruco_8hpp.html">opencv2/aruco.hpp</a>&gt;</code></p>
<p>Draw a planar board. </p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d9/d6a/group__aruco.html#gace9580fe2e04beebd3ed57d413a72552" title="Implementation of drawPlanarBoard that accepts a raw Board pointer. ">_drawPlanarBoardImpl</a></dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">board</td><td>layout of the board that will be drawn. The board should be planar, z coordinate is ignored </td></tr>
    <tr><td class="paramname">outSize</td><td>size of the output image in pixels. </td></tr>
    <tr><td class="paramname">img</td><td>output image with the board. The size of this image will be outSize and the board will be on the center, keeping the board proportions. </td></tr>
    <tr><td class="paramname">marginSize</td><td>minimum margins (in pixels) of the board in the output image </td></tr>
    <tr><td class="paramname">borderBits</td><td>width of the marker borders.</td></tr>
  </table>
  </dd>
</dl>
<p>This function return the image of a planar board, ready to be printed. It assumes the <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html" title="Board of markers. ">Board</a> layout specified is planar by ignoring the z coordinates of the object points. </p>
</div>
</div>
<a id="ga366993d29fdddd995fba8c2e6ca811ea"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga366993d29fdddd995fba8c2e6ca811ea">◆ </a></span>estimatePoseBoard()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int cv::aruco::estimatePoseBoard </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> </td>
          <td class="paramname"><em>corners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>ids</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html">Board</a> &gt; &amp; </td>
          <td class="paramname"><em>board</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>cameraMatrix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>distCoeffs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>rvec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>tvec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool </td>
          <td class="paramname"><em>useExtrinsicGuess</em> = <code>false</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval, rvec, tvec</td><td>=</td><td>cv.aruco.estimatePoseBoard(</td><td class="paramname">corners, ids, board, cameraMatrix, distCoeffs, rvec, tvec[, useExtrinsicGuess]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d53/aruco_8hpp.html">opencv2/aruco.hpp</a>&gt;</code></p>
<p>Pose estimation for a board of markers. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">corners</td><td>vector of already detected markers corners. For each marker, its four corners are provided, (e.g std::vector&lt;std::vector&lt;cv::Point2f&gt; &gt; ). For N detected markers, the dimensions of this array should be Nx4. The order of the corners should be clockwise. </td></tr>
    <tr><td class="paramname">ids</td><td>list of identifiers for each marker in corners </td></tr>
    <tr><td class="paramname">board</td><td>layout of markers in the board. The layout is composed by the marker identifiers and the positions of each marker corner in the board reference system. </td></tr>
    <tr><td class="paramname">cameraMatrix</td><td>input 3x3 floating-point camera matrix \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) </td></tr>
    <tr><td class="paramname">distCoeffs</td><td>vector of distortion coefficients \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements </td></tr>
    <tr><td class="paramname">rvec</td><td>Output vector (e.g. <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">cv::Mat</a>) corresponding to the rotation vector of the board (see <a class="el" href="../../d9/d0c/group__calib3d.html#ga61585db663d9da06b68e70cfbf6a1eac" title="Converts a rotation matrix to a rotation vector or vice versa. ">cv::Rodrigues</a>). Used as initial guess if not empty. </td></tr>
    <tr><td class="paramname">tvec</td><td>Output vector (e.g. <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">cv::Mat</a>) corresponding to the translation vector of the board. </td></tr>
    <tr><td class="paramname">useExtrinsicGuess</td><td>defines whether initial guess for <b>rvec</b> and <b>tvec</b> will be used or not. Used as initial guess if not empty.</td></tr>
  </table>
  </dd>
</dl>
<p>This function receives the detected markers and returns the pose of a marker board composed by those markers. A <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html" title="Board of markers. ">Board</a> of marker has a single world coordinate system which is defined by the board layout. The returned transformation is the one that transforms points from the board coordinate system to the camera coordinate system. Input markers that are not included in the board layout are ignored. The function returns the number of markers from the input employed for the board pose estimation. Note that returning a 0 means the pose has not been estimated. </p>
</div>
</div>
<a id="ga21b51b9e8c6422a4bac27e48fa0a150b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga21b51b9e8c6422a4bac27e48fa0a150b">◆ </a></span>estimatePoseCharucoBoard()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool cv::aruco::estimatePoseCharucoBoard </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>charucoCorners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>charucoIds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d0/d3c/classcv_1_1aruco_1_1CharucoBoard.html">CharucoBoard</a> &gt; &amp; </td>
          <td class="paramname"><em>board</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>cameraMatrix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>distCoeffs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>rvec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>tvec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool </td>
          <td class="paramname"><em>useExtrinsicGuess</em> = <code>false</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval, rvec, tvec</td><td>=</td><td>cv.aruco.estimatePoseCharucoBoard(</td><td class="paramname">charucoCorners, charucoIds, board, cameraMatrix, distCoeffs, rvec, tvec[, useExtrinsicGuess]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../da/d3b/charuco_8hpp.html">opencv2/aruco/charuco.hpp</a>&gt;</code></p>
<p>Pose estimation for a ChArUco board given some of their corners. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">charucoCorners</td><td>vector of detected charuco corners </td></tr>
    <tr><td class="paramname">charucoIds</td><td>list of identifiers for each corner in charucoCorners </td></tr>
    <tr><td class="paramname">board</td><td>layout of ChArUco board. </td></tr>
    <tr><td class="paramname">cameraMatrix</td><td>input 3x3 floating-point camera matrix \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) </td></tr>
    <tr><td class="paramname">distCoeffs</td><td>vector of distortion coefficients \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements </td></tr>
    <tr><td class="paramname">rvec</td><td>Output vector (e.g. <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">cv::Mat</a>) corresponding to the rotation vector of the board (see <a class="el" href="../../d9/d0c/group__calib3d.html#ga61585db663d9da06b68e70cfbf6a1eac" title="Converts a rotation matrix to a rotation vector or vice versa. ">cv::Rodrigues</a>). </td></tr>
    <tr><td class="paramname">tvec</td><td>Output vector (e.g. <a class="el" href="../../d3/d63/classcv_1_1Mat.html" title="n-dimensional dense array class ">cv::Mat</a>) corresponding to the translation vector of the board. </td></tr>
    <tr><td class="paramname">useExtrinsicGuess</td><td>defines whether initial guess for <b>rvec</b> and <b>tvec</b> will be used or not.</td></tr>
  </table>
  </dd>
</dl>
<p>This function estimates a Charuco board pose from some detected corners. The function checks if the input corners are enough and valid to perform pose estimation. If pose estimation is valid, returns true, else returns false. </p>
</div>
</div>
<a id="ga84dd2e88f3e8c3255eb78e0f79571bd1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga84dd2e88f3e8c3255eb78e0f79571bd1">◆ </a></span>estimatePoseSingleMarkers()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::aruco::estimatePoseSingleMarkers </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> </td>
          <td class="paramname"><em>corners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>markerLength</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>cameraMatrix</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>distCoeffs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>rvecs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>tvecs</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>_objPoints</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>rvecs, tvecs, _objPoints</td><td>=</td><td>cv.aruco.estimatePoseSingleMarkers(</td><td class="paramname">corners, markerLength, cameraMatrix, distCoeffs[, rvecs[, tvecs[, _objPoints]]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d53/aruco_8hpp.html">opencv2/aruco.hpp</a>&gt;</code></p>
<p>Pose estimation for single markers. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">corners</td><td>vector of already detected markers corners. For each marker, its four corners are provided, (e.g std::vector&lt;std::vector&lt;cv::Point2f&gt; &gt; ). For N detected markers, the dimensions of this array should be Nx4. The order of the corners should be clockwise. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d9/d6a/group__aruco.html#gab9159aa69250d8d3642593e508cb6baa" title="Basic marker detection. ">detectMarkers</a> </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">markerLength</td><td>the length of the markers' side. The returning translation vectors will be in the same unit. Normally, unit is meters. </td></tr>
    <tr><td class="paramname">cameraMatrix</td><td>input 3x3 floating-point camera matrix \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) </td></tr>
    <tr><td class="paramname">distCoeffs</td><td>vector of distortion coefficients \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements </td></tr>
    <tr><td class="paramname">rvecs</td><td>array of output rotation vectors (</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d9/d0c/group__calib3d.html#ga61585db663d9da06b68e70cfbf6a1eac" title="Converts a rotation matrix to a rotation vector or vice versa. ">Rodrigues</a>) (e.g. std::vector&lt;cv::Vec3d&gt;). Each element in rvecs corresponds to the specific marker in imgPoints. </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">tvecs</td><td>array of output translation vectors (e.g. std::vector&lt;cv::Vec3d&gt;). Each element in tvecs corresponds to the specific marker in imgPoints. </td></tr>
    <tr><td class="paramname">_objPoints</td><td>array of object points of all the marker corners</td></tr>
  </table>
  </dd>
</dl>
<p>This function receives the detected markers and returns their pose estimation respect to the camera individually. So for each marker, one rotation and translation vector is returned. The returned transformation is the one that transforms points from each marker coordinate system to the camera coordinate system. The marker corrdinate system is centered on the middle of the marker, with the Z axis perpendicular to the marker plane. The coordinates of the four corners of the marker in its own coordinate system are: (-markerLength/2, markerLength/2, 0), (markerLength/2, markerLength/2, 0), (markerLength/2, -markerLength/2, 0), (-markerLength/2, -markerLength/2, 0) </p>
</div>
</div>
<a id="gaedcb47348a8f7ccf0bd65ee81a8c7152"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaedcb47348a8f7ccf0bd65ee81a8c7152">◆ </a></span>generateCustomDictionary() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt;<a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a>&gt; cv::aruco::generateCustomDictionary </td>
          <td>(</td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>nMarkers</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>markerSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>randomSeed</em> = <code>0</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.aruco.custom_dictionary(</td><td class="paramname">nMarkers, markerSize[, randomSeed]</td><td>)</td></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.aruco.custom_dictionary_from(</td><td class="paramname">nMarkers, markerSize, baseDictionary[, randomSeed]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../dc/df7/dictionary_8hpp.html">opencv2/aruco/dictionary.hpp</a>&gt;</code></p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="../../d9/d6a/group__aruco.html#gaedcb47348a8f7ccf0bd65ee81a8c7152">generateCustomDictionary</a> </dd></dl>
</div>
</div>
<a id="gab0dd0832bceb1131946e4be9f26317ba"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gab0dd0832bceb1131946e4be9f26317ba">◆ </a></span>generateCustomDictionary() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt;<a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a>&gt; cv::aruco::generateCustomDictionary </td>
          <td>(</td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>nMarkers</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>markerSize</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a> &gt; &amp; </td>
          <td class="paramname"><em>baseDictionary</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>randomSeed</em> = <code>0</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.aruco.custom_dictionary(</td><td class="paramname">nMarkers, markerSize[, randomSeed]</td><td>)</td></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.aruco.custom_dictionary_from(</td><td class="paramname">nMarkers, markerSize, baseDictionary[, randomSeed]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../dc/df7/dictionary_8hpp.html">opencv2/aruco/dictionary.hpp</a>&gt;</code></p>
<p>Generates a new customizable marker dictionary. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">nMarkers</td><td>number of markers in the dictionary </td></tr>
    <tr><td class="paramname">markerSize</td><td>number of bits per dimension of each markers </td></tr>
    <tr><td class="paramname">baseDictionary</td><td>Include the markers in this dictionary at the beginning (optional) </td></tr>
    <tr><td class="paramname">randomSeed</td><td>a user supplied seed for <a class="el" href="../../d2/de8/group__core__array.html#ga75843061d150ad6564b5447e38e57722" title="Returns the default random number generator. ">theRNG()</a></td></tr>
  </table>
  </dd>
</dl>
<p>This function creates a new dictionary composed by nMarkers markers and each markers composed by markerSize x markerSize bits. If baseDictionary is provided, its markers are directly included and the rest are generated based on them. If the size of baseDictionary is higher than nMarkers, only the first nMarkers in baseDictionary are taken and no new marker is added. </p>
</div>
</div>
<a id="ga0c158c55c50df8354930927d819f7e9d"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga0c158c55c50df8354930927d819f7e9d">◆ </a></span>getBoardObjectAndImagePoints()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::aruco::getBoardObjectAndImagePoints </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html">Board</a> &gt; &amp; </td>
          <td class="paramname"><em>board</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> </td>
          <td class="paramname"><em>detectedCorners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>detectedIds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>objPoints</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>imgPoints</em> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>objPoints, imgPoints</td><td>=</td><td>cv.aruco.getBoardObjectAndImagePoints(</td><td class="paramname">board, detectedCorners, detectedIds[, objPoints[, imgPoints]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d53/aruco_8hpp.html">opencv2/aruco.hpp</a>&gt;</code></p>
<p>Given a board configuration and a set of detected markers, returns the corresponding image points and object points to call solvePnP. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">board</td><td>Marker board layout. </td></tr>
    <tr><td class="paramname">detectedCorners</td><td>List of detected marker corners of the board. </td></tr>
    <tr><td class="paramname">detectedIds</td><td>List of identifiers for each marker. </td></tr>
    <tr><td class="paramname">objPoints</td><td>Vector of vectors of board marker points in the board coordinate space. </td></tr>
    <tr><td class="paramname">imgPoints</td><td>Vector of vectors of the projections of board marker corner points. </td></tr>
  </table>
  </dd>
</dl>
</div>
</div>
<a id="gaf5d7e909fe8ff2ad2108e354669ecd17"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gaf5d7e909fe8ff2ad2108e354669ecd17">◆ </a></span>getPredefinedDictionary() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt;<a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a>&gt; cv::aruco::getPredefinedDictionary </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../d9/d6a/group__aruco.html#gac84398a9ed9dd01306592dd616c2c975">PREDEFINED_DICTIONARY_NAME</a> </td>
          <td class="paramname"><em>name</em></td><td>)</td>
          <td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.aruco.getPredefinedDictionary(</td><td class="paramname">dict</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../dc/df7/dictionary_8hpp.html">opencv2/aruco/dictionary.hpp</a>&gt;</code></p>
<p>Returns one of the predefined dictionaries defined in PREDEFINED_DICTIONARY_NAME. </p>
</div>
</div>
<a id="ga461f8400cbf453ac94fbe3c680192fa2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga461f8400cbf453ac94fbe3c680192fa2">◆ </a></span>getPredefinedDictionary() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt;<a class="el" href="../../d5/d0b/classcv_1_1aruco_1_1Dictionary.html">Dictionary</a>&gt; cv::aruco::getPredefinedDictionary </td>
          <td>(</td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>dict</em></td><td>)</td>
          <td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.aruco.getPredefinedDictionary(</td><td class="paramname">dict</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../dc/df7/dictionary_8hpp.html">opencv2/aruco/dictionary.hpp</a>&gt;</code></p>
<p>Returns one of the predefined dictionaries referenced by DICT_*. </p>
</div>
</div>
<a id="gadcc5dc30c9ad33dcf839e84e8638dcd1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#gadcc5dc30c9ad33dcf839e84e8638dcd1">◆ </a></span>interpolateCornersCharuco()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int cv::aruco::interpolateCornersCharuco </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga606feabe3b50ab6838f1ba89727aa07a">InputArrayOfArrays</a> </td>
          <td class="paramname"><em>markerCorners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>markerIds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d0/d3c/classcv_1_1aruco_1_1CharucoBoard.html">CharucoBoard</a> &gt; &amp; </td>
          <td class="paramname"><em>board</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>charucoCorners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>charucoIds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>cameraMatrix</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>distCoeffs</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int </td>
          <td class="paramname"><em>minMarkers</em> = <code>2</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval, charucoCorners, charucoIds</td><td>=</td><td>cv.aruco.interpolateCornersCharuco(</td><td class="paramname">markerCorners, markerIds, image, board[, charucoCorners[, charucoIds[, cameraMatrix[, distCoeffs[, minMarkers]]]]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../da/d3b/charuco_8hpp.html">opencv2/aruco/charuco.hpp</a>&gt;</code></p>
<p>Interpolate position of ChArUco board corners. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">markerCorners</td><td>vector of already detected markers corners. For each marker, its four corners are provided, (e.g std::vector&lt;std::vector&lt;cv::Point2f&gt; &gt; ). For N detected markers, the dimensions of this array should be Nx4. The order of the corners should be clockwise. </td></tr>
    <tr><td class="paramname">markerIds</td><td>list of identifiers for each marker in corners </td></tr>
    <tr><td class="paramname">image</td><td>input image necesary for corner refinement. Note that markers are not detected and should be sent in corners and ids parameters. </td></tr>
    <tr><td class="paramname">board</td><td>layout of ChArUco board. </td></tr>
    <tr><td class="paramname">charucoCorners</td><td>interpolated chessboard corners </td></tr>
    <tr><td class="paramname">charucoIds</td><td>interpolated chessboard corners identifiers </td></tr>
    <tr><td class="paramname">cameraMatrix</td><td>optional 3x3 floating-point camera matrix \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) </td></tr>
    <tr><td class="paramname">distCoeffs</td><td>optional vector of distortion coefficients \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements </td></tr>
    <tr><td class="paramname">minMarkers</td><td>number of adjacent markers that must be detected to return a charuco corner</td></tr>
  </table>
  </dd>
</dl>
<p>This function receives the detected markers and returns the 2D position of the chessboard corners from a ChArUco board using the detected Aruco markers. If camera parameters are provided, the process is based in an approximated pose estimation, else it is based on local homography. Only visible corners are returned. For each corner, its corresponding identifier is also returned in charucoIds. The function returns the number of interpolated corners. </p>
</div>
</div>
<a id="ga13a2742381c0a48e146d230a8cda2e66"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga13a2742381c0a48e146d230a8cda2e66">◆ </a></span>refineDetectedMarkers()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void cv::aruco::refineDetectedMarkers </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>image</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d4/db2/classcv_1_1aruco_1_1Board.html">Board</a> &gt; &amp; </td>
          <td class="paramname"><em>board</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga8899575c0929a56ab8bdd01cf34ebcb1">InputOutputArrayOfArrays</a> </td>
          <td class="paramname"><em>detectedCorners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaf77c9a14ef956c50c1efd4547f444e63">InputOutputArray</a> </td>
          <td class="paramname"><em>detectedIds</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga8899575c0929a56ab8bdd01cf34ebcb1">InputOutputArrayOfArrays</a> </td>
          <td class="paramname"><em>rejectedCorners</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>cameraMatrix</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>distCoeffs</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>minRepDistance</em> = <code>10.f</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">float </td>
          <td class="paramname"><em>errorCorrectionRate</em> = <code>3.f</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">bool </td>
          <td class="paramname"><em>checkAllOrders</em> = <code>true</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#gaad17fda1d0f0d1ee069aebb1df2913c0">OutputArray</a> </td>
          <td class="paramname"><em>recoveredIdxs</em> = <code><a class="el" href="../../dc/d84/group__core__basic.html#gad9287b23bba2fed753b36ef561ae7346">noArray</a>()</code>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d1/dcd/structcv_1_1aruco_1_1DetectorParameters.html">DetectorParameters</a> &gt; &amp; </td>
          <td class="paramname"><em>parameters</em> = <code><a class="el" href="../../d1/dcd/structcv_1_1aruco_1_1DetectorParameters.html#aca7a04c0d23b3e1c575e11af697d506c">DetectorParameters::create</a>()</code> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>detectedCorners, detectedIds, rejectedCorners, recoveredIdxs</td><td>=</td><td>cv.aruco.refineDetectedMarkers(</td><td class="paramname">image, board, detectedCorners, detectedIds, rejectedCorners[, cameraMatrix[, distCoeffs[, minRepDistance[, errorCorrectionRate[, checkAllOrders[, recoveredIdxs[, parameters]]]]]]]</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../d9/d53/aruco_8hpp.html">opencv2/aruco.hpp</a>&gt;</code></p>
<p>Refind not detected markers based on the already detected and the board layout. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">image</td><td>input image </td></tr>
    <tr><td class="paramname">board</td><td>layout of markers in the board. </td></tr>
    <tr><td class="paramname">detectedCorners</td><td>vector of already detected marker corners. </td></tr>
    <tr><td class="paramname">detectedIds</td><td>vector of already detected marker identifiers. </td></tr>
    <tr><td class="paramname">rejectedCorners</td><td>vector of rejected candidates during the marker detection process. </td></tr>
    <tr><td class="paramname">cameraMatrix</td><td>optional input 3x3 floating-point camera matrix \(A = \vecthreethree{f_x}{0}{c_x}{0}{f_y}{c_y}{0}{0}{1}\) </td></tr>
    <tr><td class="paramname">distCoeffs</td><td>optional vector of distortion coefficients \((k_1, k_2, p_1, p_2[, k_3[, k_4, k_5, k_6],[s_1, s_2, s_3, s_4]])\) of 4, 5, 8 or 12 elements </td></tr>
    <tr><td class="paramname">minRepDistance</td><td>minimum distance between the corners of the rejected candidate and the reprojected marker in order to consider it as a correspondence. </td></tr>
    <tr><td class="paramname">errorCorrectionRate</td><td>rate of allowed erroneous bits respect to the error correction capability of the used dictionary. -1 ignores the error correction step. </td></tr>
    <tr><td class="paramname">checkAllOrders</td><td>Consider the four posible corner orders in the rejectedCorners array. If it set to false, only the provided corner order is considered (default true). </td></tr>
    <tr><td class="paramname">recoveredIdxs</td><td>Optional array to returns the indexes of the recovered candidates in the original rejectedCorners array. </td></tr>
    <tr><td class="paramname">parameters</td><td>marker detection parameters</td></tr>
  </table>
  </dd>
</dl>
<p>This function tries to find markers that were not detected in the basic detecMarkers function. First, based on the current detected marker and the board layout, the function interpolates the position of the missing markers. Then it tries to find correspondence between the reprojected markers and the rejected candidates based on the minRepDistance and errorCorrectionRate parameters. If camera parameters and distortion coefficients are provided, missing markers are reprojected using projectPoint function. If not, missing marker projections are interpolated using global homography, and all the marker corners in the board must have the same Z coordinate. </p>
</div>
</div>
<a id="ga90a455587ebb94cc0e0c7be1a929acb1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ga90a455587ebb94cc0e0c7be1a929acb1">◆ </a></span>testCharucoCornersCollinear()</h2>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool cv::aruco::testCharucoCornersCollinear </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="../../dc/d84/group__core__basic.html#ga6395ca871a678020c4a31fadf7e8cc63">Ptr</a>&lt; <a class="el" href="../../d0/d3c/classcv_1_1aruco_1_1CharucoBoard.html">CharucoBoard</a> &gt; &amp; </td>
          <td class="paramname"><em>_board</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="../../dc/d84/group__core__basic.html#ga353a9de602fe76c709e12074a6f362ba">InputArray</a> </td>
          <td class="paramname"><em>_charucoIds</em> </td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table><table class="python_language"><tr><th colspan="999" style="text-align:left">Python:</th></tr><tr><td style="width: 20px;"></td><td>retval</td><td>=</td><td>cv.aruco.testCharucoCornersCollinear(</td><td class="paramname">_board, _charucoIds</td><td>)</td></tr></table>
</div><div class="memdoc">
<p><code>#include &lt;<a class="el" href="../../da/d3b/charuco_8hpp.html">opencv2/aruco/charuco.hpp</a>&gt;</code></p>
<p>test whether the ChArUco markers are collinear </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">_board</td><td>layout of ChArUco board. </td></tr>
    <tr><td class="paramname">_charucoIds</td><td>list of identifiers for each corner in charucoCorners per frame. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>bool value, 1 (true) if detected corners form a line, 0 (false) if they do not. solvePnP, calibration functions will fail if the corners are collinear (true).</dd></dl>
<p>The number of ids in charucoIDs should be &lt;= the number of chessboard corners in the board. This functions checks whether the charuco corners are on a straight line (returns true, if so), or not (false). Axis parallel, as well as diagonal and other straight lines detected. Degenerate cases: for number of charucoIDs &lt;= 2, the function returns true. </p>
</div>
</div>
</div><!-- contents -->
<!-- HTML footer for doxygen 1.8.6-->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Fri Apr 2 2021 11:36:41 for OpenCV by  <a href="http://www.doxygen.org/index.html">
<img alt="doxygen" class="footer" src="../../doxygen.png"/>
</a> 1.8.13
</small></address>
<script type="text/javascript">
//<![CDATA[
addTutorialsButtons();
//]]>
</script>
</body>
</html>
